Method for generating and evaluating a table model for circuit simulation

ABSTRACT

A method for generating and evaluating a table model for circuit simulation in N dimensions employing mathematical expressions for modeling a device. The table model uses an unstructured N-dimensional grid for approximating the expressions. The method includes the steps of: (a) establishing a function domain having boundary limits in the N dimensions; (b) performing an accuracy partitioning operation to establish accuracy partitions; the mathematical expressions being satisfied within each accuracy partition within a predetermined error criteria; (c) performing a continuity partitioning operation to establish continuity partitions ensuring continuity of solutions of the mathematical expressions across boundaries separating adjacent accuracy partitions; (d) performing a grid refining operation to configure the continuity partitions to assure monotonic solutions of the mathematical expressions in the continuity partitions; (e) if a continuity partition is altered during the grid refining operation, returning to step (c), else proceeding to next step; (f) ending the method.

BACKGROUND OF THE INVENTION

The present invention is directed to methods for evaluating devicemodels in circuit simulators. Circuit simulators are computer programsthat solve a system of mathematical expressions, such as algebraicdifferential equations, that describe or model a circuit. Simulators mayconstruct the mathematical expressions, such as algebraic differentialequations, from physical or analytical models of devices contained inthe circuit. A physical or analytical model is basically a set ofequations that express, for example, device currents and charges (orcapacitances) as functions of the terminal voltages. A physical oranalytical model may be employed to evaluate other parameters as well.

Sometimes weeks of computation are required to carry out a propersimulation of a complex circuit. It has been observed that simulatorsmay spend a majority of the computation time (e.g., approximately 70%)in constructing the circuit equations (i.e., evaluating device models)rather than solving the equations. Another difficulty with such purelymathematical modeling is that it is often difficult and time consumingto extract a good model for a complex device or circuit.

One way to reduce the processor time required for device modelevaluation is to replace the physical or mathematical model with a tablemodel. In a table model, measured or precomputed device parameters, suchas currents, capacitances or charges, are stored for different biasvoltage points in a tabular form. Interpolation is employed fordetermining bias voltage values that do not coincide with value entries.

Some table models are based upon structured grids. Structured grids arecharacterized by regular connectivity. With structured regularconnectivity, the points of the grids can be indexed and the neighborsof each point can be calculated rather than looked up. For example, in astructured grid the neighbors of a point (i,j) are located at (i+1,j),(i−1,j), and so on. Some desirable properties for device models, such ascontinuity and monotonicity, can be preserved in structured grid systemsif proper interpolation schemes are employed. However, one drawback of astructured grid system is that its accuracy is limited by the availablecomputer memory, especially as the number of dimensions increases.

Other table models may be based upon unstructured grids. An example ofsuch an unstructured grid table model employs a tree-based modelapproximation (TBMA) method. TBMA is a method to split the rootpartition, which is the function domain of interest, recursively. Thefunction domain is partitioned continuously until the difference betweenthe actual functional values and the interpolated values in allpartitions meet specified error or tolerance criteria. When the errorinside one partition is less than the specified tolerance, the divisionof that partition is stopped but division of the other partitions iscontinued unless they meet the error or tolerance criteria also. As aresult, smaller partitions appear at regions of the domain where thefunction is more nonlinear. On the other hand, if the function isapproximately linear large partitions will be sufficient to give therequired accuracy. The divided function domain is represented by amodified 2^(N) tree where N is the dimension of the function domain. A2^(N) tree is a tree in which each interior node has exactly 2^(N)descendants, each of which represents a partition of the functiondomain.

An example of an unstructured grid device model is described in “DeviceModel Approximation Using 2^(N) Trees”, by David M. Lewis; IEEETransactions on Computer-Aided Designs, Vol. 9, No. 1; January 1990.Lewis describes an application of 2^(N) trees to device modelapproximation in which the domain of the device model functions ispartitioned using a modified 2^(N) tree with smaller partitions wherethe function is more nonlinear. An application of Lewis' approach isdescribed for approximating MOSFET models by Cheng and Li in “A FastMethod for MOS Model Evaluation in VLSI Simulation with ControllableError”, China 1991 International Conference on Circuits and Systems;June 1991. An application of Lewis' approach is described forapproximating SOI transistor models by Nadzhin et al. in “SOI TransistorModel for Fast Transient Simulation”, ICCAD '03; Nov. 11-13 2003.

Lewis describes partitioning a domain into accuracy partitions topreserve accuracy of modeling using the table embodied in the grid. ThenLewis describes a complex procedure involving evaluation of constraintsto further partition the domain for purposes of preserving continuity ofthe table model.

There is a need for a simpler, more straightforward approach toestablishing a table model approximation for evaluating a complexdevice.

There is a need for a table model approximation method for evaluating adevice that preserves the monotonicity and continuity of a model whilereducing computation time for model evaluation.

SUMMARY OF THE INVENTION

A method for generating and evaluating a robust and efficient tablemodel for circuit simulation in N dimensions employing mathematicalexpressions for modeling a device that preserves continuity andmonotonicity of analytical device models. The table model uses anunstructured N-dimensional grid for approximating the expressions(device model functions). The method includes the steps of: (a)establishing a device function domain having boundary limits in the Ndimensions; (b) performing an accuracy partitioning operation toestablish accuracy partitions; the mathematical expressions beingsatisfied within each accuracy partition within a predetermined errorcriteria; (c) performing a continuity partitioning operation toestablish continuity partitions ensuring continuity of solutions of themathematical expressions across boundaries separating adjacent accuracypartitions; (d) performing a grid refining operation to configure thecontinuity partitions to assure monotonic solutions of the mathematicalexpressions in the continuity partitions; (e) if a continuity partitionis altered during the grid refining operation, returning to step (c),else proceeding to next step; (f) ending the method.

It is, therefore, an object of the present invention to provide a methodfor evaluating a device that is a simple, straightforward approach toestablishing a table model approximation for evaluating a complexdevice.

It is a further object of the present invention to provide a method forevaluating a device that preserves the monotonicity and continuity of amodel while reducing computation time for model evaluation.

Further objects and features of the present invention will be apparentfrom the following specification and claims when considered inconnection with the accompanying drawings, in which like elements arelabeled using like reference numerals in the various figures,illustrating the preferred embodiments of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a representative unpartitioned two-dimensional functiondomain.

FIG. 2 is a representative two-dimensional function domain with accuracypartitions.

FIG. 3 is a two-dimensional binary space partition representation of thefunction domain illustrated in FIG. 2.

FIG. 4 is a representative two-dimensional function domain with accuracypartitions and continuity partitions.

FIG. 5 is a two-dimensional binary space partition representation of thefunction domain illustrated in FIG. 4.

FIG. 6 is a schematic representation of data stored for representing thetwo-dimensional function domain with accuracy partitions illustrated nFIG. 2.

FIG. 7 illustrates binary space representations associated with a datastore of the form illustrated in FIG. 6.

FIG. 8 is a schematic illustration of the grid refinement operation ofthe present invention showing a representative function domain and anassociated binary space partition tree representation.

FIG. 9 is a flow chart illustrating the preferred embodiment of themethod of the present invention.

FIG. 10 is a schematic diagram illustrating a prior art method for treetraversal.

FIG. 11 is a schematic diagram illustrating the preferred method of treetraversal of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

The method of the present invention may be employed to approximate orsimulate any (N+1)-terminal (where N>2) device models. By way of exampleand not by way of limitation, such devices include bipolar junctiontransistors (BJT), 3-dimensional devices (for example, FinFET; a MOSFETtransistor that includes a three dimensional fin structure),heterostructure devices, optoelectronic devices, micro electromechanicalsystems (MEMS) and other devices, so long as the device functions arecontinuous.

For the sake of simplicity of explanation and illustration, the methodof the present invention will be described in two dimensions (N=2).Those skilled in the art of device modeling or circuit simulation willrecognize the utility of the method when N>2.

FIG. 1 is a representative unpartitioned two-dimensional functiondomain. In FIG. 1, a function domain 10 relating to a function f (x₀,x₁)—a function of the independent variables x₀, x₁—is illustrated withrespect to axes x₀ and x₁. Points in function domain 10 may bereferenced by calling out their coordinates (x₀, x₁). The value offunction f (x₀, x₁) at a given point in function domain 10 is indicatedby the term fx₀x₁. Following this convention, the value of functionf(x₀, x₁) at x₀=0 and x₁=0 is indicated by the term f00. The value offunction f(x₀, x₁) at x₀=1 and x₁=0 is indicated by the term f10. Thevalue of function f(x₀, x₁) at x₀=1 and x₁=1 is indicated by the termf11. The value of function f (x₀, x₁) at x₀=0 and x₁=1 is indicated bythe term f01.

FIG. 2 is a representative for a two-dimensional function domain withaccuracy partitions. In FIG. 2, function domain 11 is characterized as aunity square that is defined by a pair of diagonal corners, point 12 at(0,0) and point 16 at (1,1). Function domain 11 is partitioned into aplurality of partitions or cells A, B, C, D. Partitions A, B, C, D areaccuracy partitions and are determined in a manner substantially similarto the method described for effecting accuracy partitioning by Lewis[“Device Model Approximation Using 2^(N) Trees”, by David M. Lewis; IEEETransactions on Computer-Aided Designs, Vol. 9, No. 1; January 1990].That is, function domain 11 is recursively split using hyperplanes (whenN=2, hyperplanes are lines) until predetermined error criteria aresatisfied. The essence of accuracy partitioning function domain 11 is toassure that an interpolation in function domain 11 will yield anestimated solution for function f at a solution locus that is within apredetermined acceptable error of the actual solution of function f atthat solution locus.

The process of accuracy partitioning may be described as a binary spacepartition (BSP) operation. Accuracy partitioning as employed with themethod of the present invention is an example of a tree-based modelapproximation (TBMA) method, as discussed above in the Background of theInvention portion of this description. TBMA is a method to split theroot partition, which is the function domain of interest, recursively.The function domain is partitioned continuously until the differencebetween the actual functional values and the interpolated values in allpartitions meet the specified error criteria. When the error inside onepartition is less than the specified tolerance, the division of thatpartition is stopped but division of the other partitions is continuedunless they meet the error criteria also. As a result, smallerpartitions appear at regions of the domain where the function is morenonlinear. On the other hand, if the function is approximately linearlarge partitions will be sufficient to give the required accuracy. Thedivided function domain is represented by a binary space partition (BSP)tree. Each node in the BSP tree represents a convex subspace or apartition. The root partition is the whole function domain 11. Leafpartitions are sometimes referred to as cells. Each BSP tree node storesa hyperplane that divides the space it represents into two halves, andstores references to two nodes that represent each half. In Lewis'swork, the resulting BSP tree can be height compressed into a modified2^(N) tree where N is the dimension of the function domain. The BSP treeis not compressed into a modified 2^(N) tree in present invention.

Function domain 11 has been accuracy partitioned to establish accuracypartitions or cells A, B, C, D. Accuracy partition or cell A is definedby corners 12 and 13 [i.e., points (0, 0) and (0.5, 0.5)]. Accuracypartition or cell B is defined by corners 9 and 17 [i.e., points (0.5,0) and (0.75, 1)]. Accuracy partition or cell C is defined by corners 7and 15 [i.e., points (0, 0.5) and (0.5, 1)]. Accuracy partition or cellD is defined by corners 19 and 16 [i.e., points (0.75, 0) and (1, 1)].

Interpolating a function f at point 13 (i.e., point (0.5, 0.5)), may beeffected with respect to either accuracy partition A or accuracypartition B. With respect to accuracy partition A an interpolationfunction {circumflex over (f)} is:{circumflex over (f)}(0.5, 0.5)=f(0.5, 0.5)  [1]

With respect to accuracy partition B an interpolation function f is:$\begin{matrix}{{\hat{f}\left( {0.5,0.5} \right)} = \frac{{f\left( {0.5,0} \right)} + {f\left( {0.5,1} \right)}}{2}} & \lbrack 2\rbrack\end{matrix}$

If the solutions to expressions [1] and [2] differ, there isdiscontinuity of the interpolation function {circumflex over (f)} at theboundary separating accuracy partitions A, B. This is dealt with usingcontinuity partitions, as will be explained in detail in connection withFIG. 4.

FIG. 3 is a two-dimensional binary space partition representation of thefunction domain illustrated in FIG. 2. In FIG. 3, a BSP tree 20 isillustrated that represents divided function domain 11 (FIG. 2). Tree 20has a primary reference node 22 having a 1-D (i.e., one-dimensional)splitting hyperplane or a line: [x₀=0.5]. A branch 24 from referencenode 22 connects with a secondary reference node 26 having a hyperplaneor a line: [x₀=0.5]. A branch 28 from reference node 22 connects with asecondary reference node 30 having a hyperplane or a line: [x₀=0.75]. Abranch 32 from secondary reference node 26 connects with a leaf 33representing accuracy partition or cell A. A branch 34 from secondaryreference node 26 connects with a leaf 35 representing accuracypartition or cell C. A branch 36 from secondary reference node 30connects with a leaf 37 representing accuracy partition or cell B. Abranch 38 from secondary reference node 30 connects with a leaf 39representing accuracy partition or cell D.

One may observe that reference nodes 22, 26, 30 are related tointersections of partition edges with zero axes. Reference node 22 isrelated to intersection of a partition edge with the x₁=0 axis at apoint (0.5, 0). Reference node 26 is related to intersection of apartition edge with the x₀=0 axis at a point (0, 0.5). Reference node 30is related to intersection of a partition edge with the x₁=0 axis at apoint (0.75, 0).

Inspecting FIG. 3 with reference to FIG. 2, one may notice that branch24 includes x₀=0.5 and all points to the left of x₀=0.5. Branch 28includes all points to the right of x₀=0.5. Branch 32 includes x₁=0.5and all points to the left of x₀=0.5 for x₁=0.5 and for all points belowx₁=0.5, viz; accuracy cell A. Branch 34 includes x₀=0.5 and all pointsto the left of x₀=0.5 for all points above x₁=0.5, viz; accuracy cell C.Branch 36 includes all points to the right of x₀=0.5 for x₀=0.75 and forall points to the left of x₀=0.75, viz; accuracy cell B. Branch 38includes all points to the right of x₀=0.5 and for all points to theright of x₀=0.75, viz; accuracy cell D.

Once a function domain has been accuracy partitioned, there is still arisk that the function may have discontinuities between two accuracypartitions because there are multiple possible interpolations of thevalue of a function at a particular point, that is f (x₀, x₁).

FIG. 4 is a representative two-dimensional solution domain with accuracypartitions and continuity partitions. In FIG. 4, a function domain 40 isillustrated as a unity square defined by a pairs of corners (x₀, x₁):(0, 0) and (1, 1). Function domain 40 has been accuracy partitioned toestablish accuracy cells A, C, D. An accuracy cell B was alsoestablished, as described and illustrated in connection with FIG. 2.However, evaluation of the function f (x₀, x₁) at point (0.5, 0.5) withrespect to accuracy cells A and B yielded different results, therebyidentifying a discontinuity (as described earlier herein in connectionwith expressions [1] and [2]). Point (0.5, 0.5) is a corner for accuracycells A and C but an edge point for accuracy cell B. Since point (0.5,0.5) is in the middle of an edge of cell B between corner (0.5,0) andcorner (0.5,1), point (0.5, 0.5) is referred here as a middle edge pointof cell B.

Having identified a condition of discontinuity at middle edge point(0.5, 0.5) of cell B, a discontinuity partitioning operation isperformed, extending the intercell boundary between accuracy cells A, C(a line between points (0, 0.5) and (0.5, 0.5)) to intersect the nextboundary encountered. In this exemplary illustration in FIG. 4, theintercell boundary between accuracy cells A, C is extended to the righthand boundary of accuracy cell B (a line between points (0.75, 0) and(0.75, 1)). In this manner, a pseudo boundary 42 is established(indicated by a dotted line between points (0.5, 0.5) and (0.75, 0.5))dividing accuracy cell B into continuity cells E and F. A pseudo locusor pseudo point 44 is thus established at the new termination of thepseudo boundary at point.

It should be kept in mind that FIGS. 2 and 4 are much-simplifiedexemplary function domain partitioning arrangements. For one thing, edgepoints may also occur in connection with vertically oriented intercellboundaries. Another, more important consideration is that a typicalevaluation or simulation using a tree-based model approximation (TBMA)method involves many thousands of partitions or cells. Even moreimportant a consideration is that high-dimensional models (N>2) are verycomplex. Nevertheless, as mentioned earlier herein, such TBMA methodsare preferred over actually solving modeling mathematical expressionsfor a large number of sample points.

It is preferred that pseudo locus 44 be established at an interpolatedlocus, such as at point (0.75, 0.5), because such a solution avoidsdiscontinuity occurring at pseudo locus 44.

A complex process of evaluating placement of pseudo loci is described byLewis [“Device Model Approximation Using 2^(N) Trees”, by David M.Lewis; IEEE Transactions on Computer-Aided Designs, Vol. 9, No. 1;January 1990]. Lewis performs repeated passes through the treedescribing the function domain (see, for example, tree 20; FIG. 3). Eachpass first generates all constraints for every midpoint on every edge ofall leaf partitions (i.e., each intercell boundary not coinciding with aboundary of the function domain). Duplicate restraints for a given locusare eliminated. The second part of each pass examines the points, andsplits any leaf partition that has an edge point with more than oneconstraint. The process is repeated until no partitions are split, andeach corner has at most one constraint. Function values are thenassigned to the corners resulting in a continuous interpolation function{circumflex over (f)}. Lewis' method is complicated and time consuming.Making repeated passes through the function domain for evaluating lociin not an inconsequential task when the table model in the functiondomain involves many thousands of partitions, as is common with manydevice or product simulation or evaluation programs.

The present invention avoids repeated passes through the function domainand simplifies selection of pseudo loci for continuity partitions. Thepresent invention simply establishes a continuity partition for each andevery middle edge point encountered among the accuracy partitions orcells.

FIG. 5 is a two-dimensional binary space partition representation of thesolution domain illustrated in FIG. 4. In FIG. 5, a BSP tree 50 (N=2) isillustrated that represents divided function domain 40 (FIG. 4). Tree 50has a primary reference node 52 having a hyperplane or a line: [x₀=0.5].A branch 54 from reference node 52 connects with a secondary referencenode 56 having a hyperplane or a line: [x₁=0.5]. A branch 58 fromreference node 52 connects with a secondary reference node 60 having ahyperplane or a line: [x₀=0.75]. A branch 62 from secondary referencenode 56 connects with a leaf 63 representing accuracy partition or cellA. A branch 64 from secondary reference node 56 connects with a leaf 65representing accuracy partition or cell C. A branch 66 from secondaryreference node 60 connects with a new continuity reference node 67. Abranch 68 from secondary reference node 60 connects with a leaf 69representing accuracy partition or cell D. A branch 70 from newcontinuity reference node 67 connects with a leaf 74 representingcontinuity partition E. A branch 72 from new continuity reference node67 connects with a leaf 76 representing continuity partition F.

One may observe that reference nodes 52, 56, 60 are related tointersections of partition edges with zero axes. Reference node 52 isrelated to intersection of a partition edge with the x₁=0 axis at apoint (0.5, 0). Reference node 56 is related to intersection of apartition edge with the x₀=0 axis at a point (0, 0.5). Reference node 60is related to intersection of a partition edge with the x₁=0 axis at apoint (0.75, 0).

Inspecting FIG. 5 with reference to FIG. 4, one may notice that branch54 includes x₀=0.5 and all points to the left of x₀=0.5. Branch 58includes all points to the right of x₀=0.5. Branch 62 includes x₀=0.5and all points to the left of x₀=0.5 for x₁=0.5 and for all points belowx₁=0.5, viz; accuracy cell A. Branch 64 includes x₀=0.5 and all pointsto the left of x₀=0.5 for all points above x₁=0.5, viz; accuracy cell C.Branch 66 includes all points to the right of x₀=0.5 for x₀=0.75 and forall points to the left of x₀=0.75, viz; the horizontal expanse ofcontinuity cells E, F (old accuracy cell B). Branch 68 includes allpoints to the right of x₀=0.5 and for all points to the right ofx₀=0.75, viz; accuracy cell D. Branch 70 includes all points within thehorizontal expanse of continuity cells E, F, and for x₁=0.5 and allpoints less than x₁=0.5. Branch 72 includes all points within thehorizontal expanse of continuity cells E, F, and D all points greaterthan x₁=0.5.

The present invention searches for edge points to determine if acontinuity partition is needed for a leaf partition or a cell. A datastructure that represents the connectivity of a grid is created duringaccuracy partition to keep track of all the edge points.

FIG. 6 is a schematic representation of data stored for representing thetwo-dimensional function domain (unstructured grid) with accuracypartitions illustrated n FIG. 2. In FIG. 6, a the connectivity datastructure 80 includes a plurality of data elements arranged in columns82 ₁, 82 ₂, 82 ₃, 82 _(n) and rows 84 ₁, 84 ₂, 84 _(m). The indicator“n” is employed to signify that there can be any number of columns inthe connectivity data structure 80. The inclusion of four columns 82 ₁,82 ₂, 82 ₃, 82 _(n) in FIG. 6 is illustrative only and does notconstitute any limitation regarding the number of columns that may beincluded in the connectivity data structure of the present invention.The indicator “m” is employed to signify that there can be any number ofrows in connectivity data structure 80. The inclusion of three rows 84₁, 84 ₂, 84 _(m) in FIG. 6 is illustrative only and does not constituteany limitation regarding the number of rows that may be included in theconnectivity data structure of the present invention.

Each respective data element may be identified by an indicator 90 nmwherein n indicates the column in which a respective data element islocated, and m indicates the row in which the respective data element islocated. Thus, if rows 84 ₁, 84 ₂, 84 _(n) in FIG. 6 are designated asRow 1, Row 2, Row 3, respectively, and if columns 82 ₁, 82 ₂, 82 ₃, 82_(n) in FIG. 6 are designated as Column 1, Column 2, Column 3, Column 4,respectively, then data elements in FIG. 6 may be labeled as indicatedusing the 90 nm indicators.

Using the 90_(nm) indicators, connectivity data structure 80 includesdata elements 90 ₁₁, 90 ₂₁, 90 ₃₁, 90 ₄₁ in Row 1. Connectivity datastructure 80 includes data elements 90 ₁₂, 90 ₂₂ in Row 2. Connectivitydata structure 80 includes data elements 90 ₁₃, 90 ₂₃, 90 ₃₃, 90 ₄₃ inRow 3.

Each data element 90 _(nm) also includes at least one pointer toidentify a next adjacent data element in connectivity data structure 80.In the preferred embodiment of connectivity data structure 80 dataelements 90 _(nm) include row pointers to identify the next adjacentdata element in a higher row and also include column pointers toidentify the next adjacent data element in a higher column. FIG. 6 is agraphic illustration to illustrate how connectivity data structureoperates. Precise details of how data is actually stored in a databaseor other data store are not discussed. Any storage arrangement thatpermits operation as described in connection with FIG. 6 is within thescope of the present invention.

Data element 90 ₁₁ includes a row pointer 110 pointing to data element90 ₁₂ and a column pointer 210 pointing to data element 90 ₂₁. Dataelement 90 ₂₁ includes a row pointer 114 pointing to data element 9022and a column pointer 212 pointing to data element 90 ₃₁. Data element 90₃₁ includes a row pointer 118 pointing to data element 90 ₃₃ (becausethe data storage site that would have contained a data element 9023 isempty) and a column pointer 212 pointing to data element 90 ₄₁. Dataelement 90 ₄₁ includes a row pointer 120 pointing to data element 90 ₄₃(because the data storage site that would have contained a data element90 ₄₂ is empty) and does not include a column pointer because there isnot a data element located n a higher column in Row 1.

Data element 90 ₁₂ includes a row pointer 112 pointing to data element90 ₁₃ and a column pointer 216 pointing to data element 90 ₂₂. Dataelement 90 ₂₂ includes a row pointer 116 pointing to data element 90 ₂₃and does not include a column pointer because there is not a dataelement located in a higher column in Row 2.

Data element 90 ₁₃ includes no row pointer (because there is not a dataelement located in a higher row in Column 1) and a column pointer 218pointing to data element 90 ₂₃. Data element 90 ₂₃ includes no rowpointer (because there is not a data element located in a higher row inColumn 2) and a column pointer 220 pointing to data element 90 ₃₃. Dataelement 90 ₃₃ includes no row pointer (because there is not a dataelement located in a higher row in Column 3) and a column pointer 222pointing to data element 90 ₄₃. Data element 90 ₄₃ includes no rowpointer (because there is not a data element located in a higher row inColumn 4) and does not include a column pointer because there is not adata element located in a higher column in Row 3.

Inspecting FIG. 6 in connection with FIG. 2 reveals that data elements90 _(nm) in connectivity data structure 80 are coordinates of end pointsof partition boundaries of function domain 11. Data element 90 ₁₁corresponds with point 12. Data element 90 ₂₁ corresponds with point 9.Data element 90 ₃₁ corresponds with point 19. Data element 90 ₄₁corresponds with point 14. Data element 90 ₁₂ corresponds with point 7.Data element 90 ₂₂ corresponds with point 13. Data element 90 ₁₃corresponds with point 18. Data element 90 ₂₃ corresponds with point 15.Data element 90 ₃₃ corresponds with point 17. Data element 90 ₄₃corresponds with point 16.

Accommodation of connectivity data structure 80 to adding a pseudo locusor point, such as pseudo point 44 (FIG. 4) is easily accomplished. Toaccommodate including pseudo point 44 one must enter at data elementsite 90 ₂₃ a position (0.75, 0.5) and a new row pointer pointing to dataelement 90 ₃₃ (not shown in FIG. 7). Further, row pointer 118 would beamended to point to new data element 90 ₂₃. Such amendments to a database to accommodate insertion (or even removal) of data points to afunction domain is easily accomplished without significantly increasingcomputer running time.

To describe the novel data structure in N dimensions (FIG. 6 is atwo-dimensional example; N=2), the new data structure represents theconnectivity of a grid that is created during an accuracy partitionoperation to keep track of all edge points in N dimensions. Each gridpoint (x^(i) ₀, x^(i) ₁, . . . , x^(i) _(N-1)) has N pointer fields thatpoint to the adjacent grid points (x^(j) ₀, x^(j) ₁, . . . , x^(j)_(N-1)) in each orthogonal direction that satisfy the followingconditions:p≠k, x^(i) _(p)=x^(j) _(p)  [3]p=k, x^(i) _(k)<x^(j) _(k)  [4]

-   -   where p=0, 1, . . . , N−1; and 0≦k≦N−1

Not all grid points have N adjacent grid points that satisfy the aboveconditions in expressions [3] and [4] so some of their pointer fieldsare empty. FIG. 6 illustrates a connectivity data structure for atwo-dimensional grid (N=2). By inspection one may observe thatconnectivity data structure 80 (FIG. 6) consists of three sorted singlylinked lists in the x₀ direction (i.e., rows 84 _(m)) and four linkedlists in the x₁ direction (i.e., columns 82 _(n)).

The present invention uses (N−1)-dimensional kd-trees to keep records ofthe heads of all the linked lists, which make searching for an existingpoint or inserting a new point very efficient. (Originally, the namekd-tree stood for k-dimensional tree, the trees shown in FIG. 7 would becalled 1d-trees. Nowadays, the original meaning is lost, and what usedto be called a 1d-tree is now called a 1-dimensional kd-tree.) Kd-treesare special type of BSP tree. A kd-tree deals a set of points. Itpartitions the space by half-planes such that each point is contained inits own region. The present invention builds a (N−1)-dimensional kd-treefor x₁ direction (x₁-coordinate). Each leaf of the kd-tree points to thehead of a linked list in the x₁ direction. So N kd-trees are needed foran N-dimensional system. The connectivity data structure and kd-trees iscreated and updated during the process of binary space partition forboth accuracy and continuity (described above). The data structure isused to identify edge points of a given cell and to determine whether acontinuity partition is needed.

In FIG. 7, an example of two one-dimensional kd-trees for constructing atwo-dimensional grid data array is shown. A first one-dimensional tree100 relates to x₀-coordinate, which relates first tree to columns 82_(n) (columns and rows will be referred to using the same referencenumerals as are used in FIG. 6 in order to simplify this explanation). Asecond one-dimensional tree 130 relates to x₁-coordinate, which relatesfirst tree to rows 82 _(m).

Tree 100 has a primary reference node 102 having a splitting point:[x₀=0.5]. A branch 104 from reference node 102 connects with a secondaryreference node-106 having a hyperplane or a line: [x₁=0]. A branch 108from reference node 102 connects with a secondary reference node 110having a splitting point: [x₁=0.75]. A branch 112 from secondaryreference node 106 connects with a terminator 113 representing a column82 ₁ in a connectivity data structure 81. A branch 114 from secondaryreference node 106 connects with a terminator 115 representing a column82 ₁ in connectivity data structure 81. A branch 116 from secondaryreference node 110 connects with a terminator 117 representing a column82 ₃ in connectivity data structure 81. A branch 118 from secondaryreference node 110 connects with a terminator 119 representing a column82 _(n) in connectivity data structure 81.

Inspecting FIG. 7 with reference to FIG. 2, one may notice that branch104 includes x₀=0.5 and all points to the left of x₀=0.5. Branch 108includes all points to the right of x₀=0.5. Branch 112 includes x₀=0 andall points to the left of x₀=0. Branch 114 includes all points to theright of x₀=0. Branch 116 includes x₀=0.75 and all points to the left ofx₀=0.75. Branch 118 includes all points to the right of x₀=0.75.

Tree 130 has a primary reference node 132 having a splitting point:[x₁=0.5]. A branch 134 from reference node 132 connects with a secondaryreference node 136 having a splitting point: [x₁=0]. A branch 138 fromreference node 132 connects with a terminator 139 representing a row 84_(m) in a connectivity data structure 81. A branch 142 from secondaryreference node 136 connects with a terminator 143 representing a row 84₁ in a connectivity data structure 81. A branch 144 from secondaryreference node 136 connects with a terminator 145 representing a row 84₂ in connectivity data structure 81.

Inspecting FIG. 7 with reference to FIG. 2, one may notice that branch134 includes x₁=0.5 and all points less than x₁=0.5. Branch 138 includesall points greater than x₁=0.5. Branch 142 includes x₁=0 and all pointsless than x₁=0. Branch 144 includes all points greater than x₁=0.

Trees 100, 130 provide a logical framework for assigning a given point(x₀, x₁) to a particular accuracy domain A, B, C, D in function domain11 (FIG. 2) and locating data relating to that given point correctly inconnectivity data structure 81. Trees 100, 130 also provide a logicalframework for locating data relating to pseudo loci (e.g., point 44;FIG. 4) correctly in connectivity data structure 81. The ease with whichpseudo points may be included in a connectivity data structure as theyare added pursuant to a continuity partitioning operation, and the lowadditional storage overhead required for the connectivity data structureor for additions to the connectivity data structure, are particularstrengths of the present invention.

Trees 100, 130 are only needed during grid generation and building ofconnectivity data structure to store information relating to the gridgenerated. Trees 100, 130 are not employed during table model evaluationor simulation. Accordingly it is preferred that tables 100, 130 beremoved once generation of a table model grid is completed. That meansthat the only memory or storage overhead associated with the table modelgrid is a connectivity data structure containing point coordinates andpointer fields, as described in connection with FIG. 6 (connectivitydata structure 80) and FIG. 7 (connectivity data structure 81).

Inspection of connectivity data structure 80 reveals that points storedtherein as data elements are corner points for partitions or cells.Providing a connectivity data structure 80 permits easy determination ofedge points in connection with further partitioning for continuitypartitioning. That is, because the corners of each leaf partition orcell is known, edge points may be easily identified by searching thepart of a linked list (along a column or along a row; i.e., the edge)between two adjacent corners.

Monotonicity of device models is important for the robustness of circuitsimulators based on the Newton-Raphson algorithm. If a device modelfunction is monotonically increasing or decreasing, then the slope isalways positive or negative. By way of example and not by way oflimitation, for a MOSFET (metal oxide silicon field effect transistor)device, its drain-to-source current I_(ds) always increases with anincrease of V_(gs) (gate-to-source voltage), V_(ds) (drain-to-sourcevoltage) and V_(bs) (base-to-source voltage) in normal operatingregions. So the 1^(st) order derivatives (slopes) of the functionI_(ds)(V_(gs), V_(ds), V_(bs)) are always greater than zero, that is,the MOSFET device always has positive conductance. This monotonicityproperty of an analytical model is typically tested before the releaseof the model. Many circuit simulators check this property and generate awarning when non-monotonicity is detected.

For multi-linear interpolation such as is practiced in using a tablemodel to evaluate a device, it can be proved that as long as the valuesat grid points are monotonic and an interpolated function is continuous,then the interpolated function is also monotonic. Proof is not includedhere for preserving simplicity in this disclosure.

Since interpolated values are used for the newly created grid points orcorners (i.e., pseudo loci or points) during continuity partition,monotonicity of a model could be destroyed during a continuitypartitioning operation. That is to say, while a device model functionf(x) is monotonic, the interpolated function {circumflex over (f)}(x) isnot necessarily monotonic after a continuity partitioning operation. Byway of example and not by way of limitation, values at point 44 (FIG. 4)may no longer monotonic after creation of continuity partitions E, Fbecause an interpolated value is assigned to pseudo corner 44.

Monotonicity preservation for table models using unstructured grid isnot known by the inventor to have been addressed before. A gridrefinement operation is provided by the preferred embodiment of themethod of the present invention to solve this problem.

The grid refinement operation first checks monotonicity of leafpartitions that have at least one corner that uses an interpolated value(i.e., a pseudo corner). If a problem regarding monotonicity isdetected, the grid refinement operation continues by going to the parentpartition containing the leaf partition in which the problem wasdetected. This continuing to a parent partition continues until apartition without a single pseudo corner is reached. The partitionhaving no pseudo corners will be the root of a subtree in the whole BSP(Binary Space Partition) tree. The grid refinement operation thenconverts all pseudo corners within that subtree to regular corners, thatis the grid refinement operation replaces interpolated values at pseudocorners with actual function values.

FIG. 8 is a schematic illustration of the grid refinement operation ofthe present invention showing a representative solution domain and anassociated binary space partition tree representation. In FIG. 8, aparent partition 150 includes an accuracy partition A and continuitypartitions B, C, D. Accuracy partitions are indicated using dotted lineformat. Continuity partitions B, C are in part defined by a pseudocorner 152. Continuity partitions C, D are in part defined by a pseudocorner 154.

A BSP (Binary Space Partition) tree 160 describes accuracy partition Aand continuity partitions B, C, D. BSP tree 160 included a root 162 fromwhich depend a branch 164 and a branch 166. Branch 166 terminates inaccuracy partition A. Branch 166 terminates at a root 168. Root 168 is aroot of a subtree defined by branches 170, 172. Branch 170 terminates incontinuity partition B. Branch 172 terminates in a root 174. Rot 174 isa root of a subtree defined by branches 176, 178. Branch 176 terminatesin continuity partition C. Branch 178 terminates in continuity partitionD.

The grid refinement operation checks continuity partitions B, C, D toascertain whether any of those partitions involves a pseudo point. Inchecking continuity partition D, pseudo point 152 is noted and a checkfor monotonicity is performed. Specifically, in the preferred embodimentof the present invention, corners in partition D that are adjacent topseudo point 152 are evaluated with respect to the function frepresented by the grid containing partitions A, B, C, D. That is,function f is solved for points 170, 172. If function f is monotonicbetween points 170, 172, then pseudo point 152 remains unchanged. If,however, function f is not monotonic between points 170, 172, then thegrid refinement operation goes from partition D to root 174 of BSP tree160. Now the grid refinement operation evaluates partitions C, D as onepartition.

Now the grid refinement operation checks partitions C, D. Pseudo point154 is noted and a check for monotonicity is performed. Specifically, inthe preferred embodiment of the present invention, corners in partitionsC, D that are adjacent to pseudo point 154 are evaluated with respect tothe function f represented by the grid containing partitions A, B, C, D.That is, function f is solved for points 170, 174. If function f ismonotonic between points 170, 174, then pseudo point 152 remainsunchanged. If, however, function f is not monotonic between points 170,174, then the grid refinement operation goes from root 174 of BSP tree160 to root 168. Now the grid refinement operation evaluates partitionsB, C, D as one partition.

Now the grid refinement operation checks partitions B, C, D. No pseudopoints bound partition B, C, D. The grid refinement operation will thensolve function f for points 152, 154 and substitute those values forpoints 152, 154. Substituting solved values for points 152, 154 assuresmonotonicity.

While grid refinement preserves monotonicity of device model functions,it could also introduce new step discontinuities on the boundary.Continuity partition and grid refinement have to be performed in a loopuntil there is no need for grid refinement.

FIG. 9 is a flow chart illustrating the preferred embodiment of themethod of the present invention. In FIG. 9, a method 200 begins withestablishing acceptable error criteria for functions to be evaluated bya table model, as indicated by a block 202. Method 200 continues withperforming an accuracy partitioning operation, as indicated by a block204. Method 200 continues with performing a continuity partitioningoperation, as indicated by a block 206. Method 200 continues withperforming a grid refinement operation, as indicated by a block 208.Method 200 continues with re-performing a continuity partitioningoperation, as indicated by return arrow 210, in order to ensure that thegrid refinement operation just performed did not introduce anydiscontinuities into the grid. Method 200 continues with re-performing agrid refinement operation, as indicated by block 208. The loopcontaining block 206, block 208 and arrow 210 is carried out until botha continuity partitioning operation (block 206) and a grid refinementoperation (block 208) are successfully performed on all partitions inthe grid with no discontinuities or monotonicity problem noted.Thereafter method 200 proceeds to step 212, indicating that anacceptable table model has been established.

The method for effecting continuity partitioning according to thepreferred embodiment of the present invention is summarized in thefollowing procedure:

(A) For each partition:

-   -   (1) For each dimension i:        -   (a) Find number of middle edge points with real function            values in the ith direction; return to (A)(1) until all            dimensions i are addressed;    -   (2) Find the direction with the maximum number of middle edge        points, i_(max);    -   (3) If there is still at least one middle edge point,        -   (a) Split the current partition on (or perpendicular to) the            i_(max) direction;        -   (b) Assign an interpolated value to newly created grid            points (i.e., pseudo points) if there is any;        -   (c) Insert newly created grid points into the linked list            using kd-trees if there is any;        -   (d) Create continuity partition (right child);        -   (e) Create continuity partition (left child), return to            (A)(2) until all dimensions i are addressed;    -   (4) Else (i.e., if there are no middle edge points associated        with the partition):        -   (a) Mark the partition as a leaf partition;

(B) Next partition, until all partitions are addressed.

There is an important aspect of the preferred embodiment of the presentinvention the preferred method of tree traversal that should bestressed. During a table model evaluation, a tree traversal finds thesmallest partition (cell or leaf partition) that includes the given biaspoint. Prior art methods use the root of the BSP tree are the startingpoint for tree traversal.

FIG. 10 is a schematic diagram illustrating a prior art method for treetraversal. In FIG. 10, a representative BSP (Binary Space Partition)tree section 220 includes a node 224 that depends from a branch 222.Branch 222 comes from higher in the tree (not shown in FIG. 10). Abranch 226 and a branch 228 depend from root 224. Branch 226 terminatesin a partition A. Branch 228 terminates at a node 230. Node 230 is aroot of a subtree defined by branches 232, 234. Branch 232 terminates ina partition B. Branch 234 terminates in a node 236. Node 236 is a rootof a subtree defined by branches 238, 240. Branch 238 terminates in apartition C. Branch 240 terminates in a partition D.

Traversals of tree 220 may be effected for table model evaluation. Priorart methods of traversing a BSP tree such as tree 220 involved a “topdown” approach. That is, traversal begins at the top of the tree at themost basic root (not shown in FIG. 10), proceeds via various branches toreach node 224, then proceeds down branches 228, 234 240 and roots 230234 to reach a partition, such as partition D.

It has been found that changes of bias points between evaluations areoften very small. Sometimes the current and previous bias points arefound in the same cell. The present invention uses a more efficientmethod that remembers the address of the cell that is last visited anduses it as the starting point of the tree traversal for the nextevaluation.

FIG. 11 is a schematic diagram illustrating the preferred method of treetraversal of the present invention. In FIG. 1, a representative BSP(Binary Space Partition) tree section 250 includes a node 254 thatdepends from a branch 252. Branch 252 comes from higher in the tree (notshown in FIG. 1). A branch 256 and a branch 258 depend from node 254.Branch 256 terminates in a partition A. Branch 258 terminates at a node260. Node 260 is a root of a subtree defined by branches 262, 264.Branch 262 terminates in a partition B. Branch 264 terminates in a node266. Node 266 is a root of a subtree defined by branches 268, 270.Branch 268 terminates in a partition C. Branch 270 terminates in apartition D.

Traversals of tree 250 may be effected for table model evaluation. Thepreferred method for traversing tree 250 is to begin from a rememberedstarting point, for example partition C, and move up the tree to thenext node encountered, such as node 266. Then one proceeds to the otherbranch emanating from node 266 to reach partition D. If anotherpartition is sought, then one proceeds further up tree 250 to anothernode, such as node 260, but only so far up tree 250 as is necessary toreach a desired partition. Useless traversal of higher levels of the BSPtree is thus avoided and tree traversal is effected in a more efficientspeedy manner.

It is to be understood that, while the detailed drawings and specificexamples given describe preferred embodiments of the invention, they arefor the purpose of illustration only, that the apparatus and method ofthe invention are not limited to the precise details and conditionsdisclosed and that various changes may be made therein without departingfrom the spirit of the invention which is defined by the followingclaims:

1. A method for generating and evaluating a table model for circuit simulation in N dimensions; said circuit simulation employing a plurality of mathematical expressions for describing a device; said table model using an unstructured N-dimensional grid for effecting approximations of said expressions; the method comprising the steps of: (a) establishing a device function domain in said N-dimensions; said function domain having boundary limits in said N-dimensions; (b) performing an accuracy partitioning operation by recursively using hyperplanes to effect splitting said function domain into a plurality of accuracy partitions until predetermined accuracy is achieved; said predetermined accuracy being achieved when said expressions are satisfied within a respective accuracy partition of said plurality of accuracy partitions within predetermined error criteria; (c) performing a continuity partitioning operation; said continuity partitioning operation comprising the steps of: (1) selecting a target accuracy partition from among said plurality of accuracy partitions; (2) selecting an evaluation dimension for evaluating said target accuracy partition; (3) determining a number of extant middle edge points between said boundary limits in said evaluation dimension having real function values; said extant middle edge points being points of intersection with boundaries of other accuracy partitions of said plurality of accuracy partitions than said target accuracy partition between said boundary limits in said evaluation dimension; (4) at a selected middle edge point of said extant middle edge points, splitting said target accuracy partition along said evaluation dimension to divide said target accuracy partition into a plurality of test partitions; (5) assigning an interpolated value to each new end locus newly created by said plurality of test partitions; each said new end locus having an assigned interpolated value being a pseudo locus; (6) if there is another said extant middle edge point remaining in said evaluation dimension having real function values, selecting a next middle edge point and returning to step (c)(4) above, else proceeding to step (c)(7); (7) if there is another said evaluation dimension remaining in said target accuracy partition, returning to step (c)(2) above, else proceeding to step (c)(8); (8) if there is another accuracy partition for which a continuity partitioning operation has not been performed, selecting a next target accuracy partition and returning to step (c)(l) above, else proceeding to next step; (d) ending the method.
 2. A method for generating and evaluating a table model for circuit simulation in N dimension as recited in claim 1 wherein the method comprises the additional step of performing a grid refinement operation; said grid refinement operation including an additional step (8.1) following step (8) and preceding step (d); said step (8.1) comprising: (8.1)(a) selecting an accuracy partition among said plurality of accuracy partitions as a grid evaluation accuracy partition; (8.1)(b) selecting a test partition of said plurality of test partitions in said grid evaluation accuracy partition as a grid evaluation test partition; (8.1)(c) if at least one end locus of said grid evaluation test partition is a pseudo locus, select a pseudo locus of said at least one pseudo locus as a test pseudo locus and compare values of end loci of said grid evaluation test partition adjacent to said test pseudo locus; (8.1)(d) if monotonicity of said plurality of mathematical expressions is not preserved between said end loci of said grid evaluation test partition adjacent to said test pseudo locus, convert all said pseudo loci of said grid evaluation partition to a regular grid point and proceeding to step (8.1)(f), else proceeding to step (8.1)(e); said regular grid point being a solution of at least one mathematical expression of said plurality of mathematical expressions in said grid evaluation test partition; (8.1)(e) if another end locus of said at least one end locus is a pseudo locus not yet selected as a test pseudo locus, selecting a next pseudo locus as said test pseudo locus and returning to step (8.1)(c), else proceed to step (8.1)(f); (8.1)(f) if there is another test partition of said plurality of test partitions not yet selected as a grid evaluation test partition, selecting another said test partition of said plurality of test partitions and returning to step (8.1)(b), else proceed to step (8.1)(g); (8.1)(g) if there is another accuracy partition of said plurality of accuracy partitions not yet selected as a grid evaluation accuracy partition, selecting another accuracy partition as a grid evaluation accuracy partition and returning to step (8.1)(b), else proceed to next step.
 3. A method for generating and evaluating a table model for circuit simulation in N dimensions; said circuit simulation employing at least one mathematical expression for describing a device; said table model using an unstructured N-dimensional grid for effecting approximations of said expressions; the method comprising the steps of: (a) establishing a function domain in said N dimensions; said function domain having boundary limits in said N dimensions; (b) performing an accuracy partitioning operation to establish a plurality of accuracy partitions; said at least one mathematical expression being satisfied within each respective accuracy partition of said plurality of accuracy partitions within a predetermined error criteria; (c) performing a continuity partitioning operation to establish a set of continuity partitions; said set of continuity partitions ensuring continuity of solutions of said at least one mathematical expression across boundaries separating respective adjacent accuracy partitions of said plurality of accuracy partitions; (d) performing a grid refining operation to configure said set of continuity partitions to assure monotonic solutions of said at least one mathematical expression in said set of continuity partitions; (e) if a continuity partition of said set of continuity partitions is altered pursuant to said grid refining operation, returning to step (c), else proceeding to next step; (f) ending the method.
 4. A method for generating and evaluating a table model for circuit simulation in N dimensions as recited in claim 3 wherein said continuity partitioning operation comprises the steps of: (c) (1) selecting a target accuracy partition from among said plurality of accuracy partitions; (c)(2) selecting an evaluation dimension for evaluating said target accuracy partition; (c)(3) determining a number of extant middle edge points between said boundary limits in said evaluation dimension having real function values; said extant middle edge points being points of intersection with boundaries of other accuracy partitions of said plurality of accuracy partitions than said target accuracy partition between said boundary limits in said evaluation dimension; (c)(4) at a selected middle edge point of said extant middle edge points, splitting said target accuracy partition along said evaluation dimension to divide said target accuracy partition into a plurality of test partitions; (c)(5) assigning an interpolated value to each new end locus newly created by said plurality of test partitions; each said new end locus having an assigned interpolated value being a pseudo locus; (c)(6) if there is another said extant middle edge point remaining in said evaluation dimension having real function values, selecting a next middle edge point and returning to step (c)(4) above, else proceeding to step (c)(7); (c)(7) if there is another said evaluation dimension remaining in said target accuracy partition, returning to step (c)(2) above, else proceeding to step (c)(8); (c)(8) if there is another accuracy partition for which a continuity partitioning operation has not been performed, selecting a next target accuracy partition and returning to step (c)(1) above, else proceeding to next step.
 5. A method for generating and evaluating a table model for circuit simulation in N dimensions as recited in claim 3 wherein said grid refining operation comprises the steps of: (d)(1) selecting an accuracy partition among said plurality of accuracy partitions as a grid evaluation accuracy partition; (d)(2) selecting a test partition of said plurality of test partitions in said grid evaluation accuracy partition as a grid evaluation test partition; (d)(3) if at least one end locus of said grid evaluation test partition is a pseudo locus, select a pseudo locus of said at least one pseudo locus as a test pseudo locus and compare values of end loci of said grid evaluation test partition adjacent to said test pseudo locus; (d)(4) if monotonicity of said plurality of mathematical expressions is not preserved between said end loci of said grid evaluation test partition adjacent to said test pseudo locus, convert all said pseudo loci of said grid evaluation partition to a regular grid point and proceeding to step (d)(6), else proceeding to step (d)(5); said regular grid point being a solution of at least one mathematical expression of said plurality of mathematical expressions in said grid evaluation test partition; (d)(5) if another end locus of said at least one end locus is a pseudo locus not yet selected as a test pseudo locus, selecting a next pseudo locus as said test pseudo locus and returning to step (d)(3), else proceed to step (d)(6); (d)(6) if there is another test partition of said plurality of test partitions not yet selected as a grid evaluation test partition, selecting another said test partition of said plurality of test partitions as a grid evaluation test partition and returning to step (d)(2), else proceed to step (d)(7); (d)(7) if there is another accuracy partition of said plurality of accuracy partitions not yet selected as a grid evaluation accuracy partition, selecting another accuracy partition as a grid evaluation accuracy partition and returning to step (d)(2), else proceed to next step.
 6. A method for generating and evaluating a table model for circuit simulation in N dimensions as recited in claim 4 wherein said grid refining operation comprises the steps of: (d)(1) selecting an accuracy partition among said plurality of accuracy partitions as a grid evaluation accuracy partition; (d)(2) selecting a test partition of said plurality of test partitions in said grid evaluation accuracy partition as a grid evaluation test partition; (d)(3) if at least one end locus of said grid evaluation test partition is a pseudo locus, select a pseudo locus of said at least one pseudo locus as a test pseudo locus and compare values of end loci of said grid evaluation test partition adjacent to said test pseudo locus; (d)(4) if monotonicity of said plurality of mathematical expressions is not preserved between said end loci of said grid evaluation test partition adjacent to said test pseudo locus, convert all said pseudo loci of said grid evaluation partition to a regular grid point and proceeding to step (d)(6), else proceeding to step (d)(5); said regular grid point being a solution of at least one mathematical expression of said plurality of mathematical expressions in said grid evaluation test partition; (d)(5) if another end locus of said at least one end locus is a pseudo locus not yet selected as a test pseudo locus, selecting a next pseudo locus as said test pseudo locus and returning to step (d)(3), else proceed to step (d)(6); (d)(6) if there is another test partition of said plurality of test partitions not yet selected as a grid evaluation test partition, selecting another said test partition of said plurality of test partitions as a grid evaluation test partition and returning to step (d)(2), else proceed to step (d)(7); (d)(7) if there is another accuracy partition of said plurality of accuracy partitions not yet selected as a grid evaluation accuracy partition, selecting another accuracy partition as a grid evaluation accuracy partition and returning to step (d)(2), else proceed to next step.
 7. A method for generating and evaluating a table model for circuit simulation in N dimensions as recited in claim 3 wherein said continuity partitioning operation comprises the steps of: (c)(1) selecting an nth dimension set from among said N-dimensions; said nth dimension set including at least two dimensions of said N-dimensions; (c)(2) selecting a target accuracy partition in said nth dimension set from among said plurality of accuracy partitions; (c)(3) selecting an evaluation dimension for evaluating said target accuracy partition; (c)(4) determining a number of extant middle edge points between said boundary limits in said evaluation dimension having real function values; said extant middle edge points being points of intersection with boundaries of other accuracy partitions of said plurality of accuracy partitions than said target accuracy partition between said boundary limits in said evaluation dimension; (c)(5) selecting a respective middle edge point of said extant middle edge points as a selected middle edge point; (c)(6) splitting said target accuracy partition along said evaluation dimension to establish a plurality of leaves branching from a respective branch node; said plurality of leaves effecting division of said target accuracy partition into a plurality of test partitions; said selected middle edge point being said respective branch node; (c)(7) if there is another said extant middle edge point remaining in said evaluation dimension having real function values, selecting a next respective middle edge point of said extant middle edge points and returning to step (c)(6) above, else proceeding to step (c)(8); (c)(8) for each respective test partition of said plurality of test partitions, assigning an interpolated value to each new end locus newly created by said plurality of test partitions; each said new end locus having an assigned interpolated value being a pseudo locus; (c)(9) if there is another said evaluation dimension remaining in said target accuracy partition, returning to step (c)(4) above, else proceeding to step (c)(10); (c)(10) if there is another accuracy partition for which a continuity partitioning operation has not been performed, selecting a next target accuracy partition and returning to step (c)(3) above, else proceeding to step (c)(11); (c)(11) if there is another dimension set from among said N-dimensions, selecting a next nth dimension step and returning to step (c)(2) above, else proceeding to next step; (d) ending the method.
 8. A method for generating and evaluating a table model for circuit simulation in N dimensions as recited in claim 7 wherein said grid refining operation comprises the steps of: (d)(1) selecting an nth dimension set from among said N-dimensions; (d)(2) selecting an accuracy partition among said plurality of accuracy partitions as a grid evaluation accuracy partition; (d)(3) selecting a test partition of said plurality of test partitions in said grid evaluation accuracy partition as a grid evaluation test partition; (d)(4) if at least one end locus of said grid evaluation test partition is a pseudo locus, select a pseudo locus of said at least one pseudo locus as a test pseudo locus; (d)(5) compare values of end loci of said grid evaluation test partition adjacent to said test pseudo locus; (d)(6) if monotonicity of said plurality of mathematical expressions is not preserved between said end loci of said grid evaluation test partition adjacent to said test pseudo locus, converting all said pseudo loci of said grid evaluation partition to a regular grid point and proceeding to step (d)(8), else proceeding to step (d)(7); said regular grid point being a solution of at least one mathematical expression of said plurality of mathematical expressions in said grid evaluation test partition; (d)(7) if another end locus of said at least one end locus is a pseudo locus not yet selected as a test pseudo locus, selecting a next pseudo locus as said test pseudo locus and returning to step (d)(5), else proceed to step (d)(8); (d)(8) if there is another test partition of said plurality of test partitions not yet selected as a grid evaluation test partition, selecting another said test partition of said plurality of test partitions as a grid evaluation test partition and returning to step (d)(4), else proceed to step (d)(9); (d)(9) if there is another accuracy partition of said plurality of accuracy partitions not yet selected as a grid evaluation accuracy partition, selecting another accuracy partition as a grid evaluation accuracy partition and returning to step (d)(3), else proceed to step (d)(10); (d)(10) if there is another dimension set from of said N-dimensions not yet selected as an nth dimension set, selecting another nth dimension set returning to step (d)(2), else proceed to next step.
 9. A method for generating and evaluating a table model for circuit simulation in N dimensions as recited in claim 7 wherein said grid refining operation comprises the steps of, following step (c)(8): (c)(8)(1) selecting a test partition of said plurality of test partitions in said grid evaluation accuracy partition as a grid evaluation test partition; (c)(8)(2) if at least one end locus of said grid evaluation test partition is a pseudo locus, select a pseudo locus of said at least one pseudo locus as a test pseudo locus; (c)(8)(3) compare values of end loci of said grid evaluation test partition adjacent to said test pseudo locus; (c)(8)(4) if monotonicity of said plurality of mathematical expressions is not preserved between said end loci of said grid evaluation test partition adjacent to said test pseudo locus, converting all said pseudo loci of said grid evaluation partition to a regular grid point and proceeding to step (c)(8)(6), else proceeding to step (c)(8)(5); said regular grid point being a solution of at least one mathematical expression of said plurality of mathematical expressions in said grid evaluation test partition; (c)(8)(5) if another end locus of said at least one end locus is a pseudo locus not yet selected as a test pseudo locus, selecting a next pseudo locus as said test pseudo locus and returning to step (c)(8)(3), else proceed to step (c)(8)(6); (c)(8)(6) if there is another test partition of said plurality of test partitions not yet selected as a grid evaluation test partition, selecting another said test partition of said plurality of test partitions as a grid evaluation partition and returning to step (c)(8)(2), else proceed to step (c)(8)(7). 